﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using Common.Model;

namespace Common.Interfaces
{
    public interface IJOthelloCallback
    {
        /// <summary>
        /// der client wird mit dem spieler, welcher ihn herausfordert, angefragt
        /// </summary>
        /// <param name="spieler"></param>
        [OperationContract(IsOneWay = true)]
        void askToPlay(CSpieler spieler);

        /// <summary>
        /// wird aufgerufen, sobald der gegner akzeptiert, bzw abgelehnt hat
        /// </summary>
        /// <param name="accepted"></param>
        [OperationContract(IsOneWay = true)]
        void playAccepted(bool accepted, CSpieler opposite);

        /// <summary>
        /// gegenspieler hat einen zug vollzogen
        /// </summary>
        /// <param name="sp"></param>
        /// <param name="p"></param>
        [OperationContract(IsOneWay = true)]
        void gotTurn(CSpieler sp, CPoint p);

        /// <summary>
        /// spiel wurde gestartet
        /// </summary>
        /// <param name="isYourTurn"></param>
        /// <param name="opponent"></param>
        /// <param name="yourColor"></param>
        /// <param name="size"></param>
        /// <param name="m"></param>
        [OperationContract(IsOneWay = true)]
        void startGame(string SpielID, bool isYourTurn, CSpieler opponent, CSpielfeld.FieldColor yourColor, int size, bool showPossible, CSpielfeld.GameMode m);

        /// <summary>
        /// tritt ein, wenn man gekickt wird
        /// </summary>
        [OperationContract(IsOneWay = true)]
        void gotKicked();

        /// <summary>
        /// tritt ein, wenn das gegenüber das spiel abgebrochen hat.
        /// </summary>
        [OperationContract(IsOneWay = true)]
        void gameCanceled();
    }
}
